/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import java.util.ArrayList;

import javax.swing.tree.DefaultMutableTreeNode;

import compilador.analizadorSemantico.tablaSimbolos.TablaSimboloSemantico;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa los otherwisesif
 */

public class Otherwisesif {
	
//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------

	/**
	 * Atributo que contiene los otherwiseif
	 */
	private ArrayList<CuerpoSi> cuerposSi;

	
//	-------------------------------------------------------------------------------------------------
//	CONSTRUCTOR
//	-------------------------------------------------------------------------------------------------

	/**
	 * @param otherwisesif
	 */
	public Otherwisesif(ArrayList<CuerpoSi> otherwisesif) {
		super();
		this.cuerposSi = otherwisesif;
	}


//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	
	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public DefaultMutableTreeNode getArbolVisual(){
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Otherwisesif");
		
		if (cuerposSi != null)
			for (CuerpoSi cuerpoSi : cuerposSi) 
				miRaiz.add(cuerpoSi.getArbolVisual());

		return miRaiz;
	}
	

	/**
	 * @return
	 */
	public String getJavaCode() {
		String retornable = "";
		
		if(cuerposSi != null)	
			for (int i = 0; i < cuerposSi.size(); i++) {
				retornable += "otherwiseif{\n" +cuerposSi.get(i)+"}\n";
			}
				
		return retornable;
	}	
	
	/**
	 * @param ts
	 * @param errores
	 * @param claseActual
	 * @param metodoActual
	 */
	public void analizarSemantica(TablaSimboloSemantico ts,
			ArrayList<SimboloError> errores, String claseActual,
			String metodoActual) {
		if(cuerposSi!= null)
			for (CuerpoSi cuerpo : cuerposSi) {
				cuerpo.analizarSemantica(ts, errores, claseActual, metodoActual);
			}
		
	}
	
//	-------------------------------------------------------------------------------------------------
//	Getters & Setters
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Metodo que nos retorna el valor de otherwisesif
	 * @return  otherwisesif. Valor retornado
	 */
	public ArrayList<CuerpoSi> getOtherwisesif() {
		return cuerposSi;
	}
	
	/**
	 * Metodo que permite asignar el valor de otherwisesif
	 * @param otherwisesif. Valor a asignar otherwisesif
	 */
	public void setOtherwisesif(ArrayList<CuerpoSi> otherwisesif) {
		this.cuerposSi = otherwisesif;
	}

}
